flask查询User,返回对象列表,提示ypeError: Object of type ‘bytes‘ is not JSON serializable解决办法

您所在的位置:网站首页 json dumps bytes flask查询User,返回对象列表,提示ypeError: Object of type ‘bytes‘ is not JSON serializable解决办法

flask查询User,返回对象列表,提示ypeError: Object of type ‘bytes‘ is not JSON serializable解决办法

2023-04-14 12:05| 来源: 网络整理| 查看: 265

先把对象转换字典:

class User(db.Model): __tablename__ = 'user' id = db.Column(db.INTEGER,primary_key=True) login_name = db.Column(db.String(80),unique=True) create_time = db.Column(db.String(80),nullable=False) sex = db.Column(db.String(80),nullable=False) cellphone = db.Column(db.String(80),nullable=False) cname = db.Column(db.String(80),nullable=False) password = db.Column(db.String(80),nullable=False) head_portrait = db.Column(db.String(80),nullable=False) birthday = db.Column(db.String(80),nullable=False) stature = db.Column(db.String(80),nullable=False) weight = db.Column(db.String(80),nullable=False) medical_history = db.Column(db.String(80),nullable=False) update_time = db.Column(db.String(80),nullable=False) location = db.Column(db.String(80),nullable=False) blood_glucose = db.Column(db.String(80),nullable=False) lastLoginTime = db.Column(db.String(80),nullable=False) newUploadTime = db.Column(db.String(80),nullable=False) identity = db.Column(db.String(80),nullable=False) deviceid = db.Column(db.String(80),nullable=False) head_portrait_time = db.Column(db.String(80),nullable=False) accid = db.Column(db.String(80),nullable=False) token = db.Column(db.String(80),nullable=False) wallet = db.Column(db.String(80),nullable=False) idcardNum = db.Column(db.String(80),nullable=False) faith = db.Column(db.String(80),nullable=False) nation = db.Column(db.String(80),nullable=False) status = db.Column(db.String(80),nullable=False) country_code = db.Column(db.String(80),nullable=False) time_diff = db.Column(db.String(80),nullable=False) final_phone = db.Column(db.String(80),nullable=False) enterprise_id = db.Column(db.String(80),nullable=False) thirdUserid = db.Column(db.String(80),nullable=False) isDoctor = db.Column(db.String(80),nullable=False) isNurse = db.Column(db.String(80),nullable=False) imAccid = db.Column(db.String(80),nullable=False) payPassWord = db.Column(db.String(80),nullable=False) isCancel = db.Column(db.String(80),nullable=False) recommendUser = db.Column(db.String(80),nullable=False) def keys(self): return ('id','login_name','create_time','sex','cellphone','cname','password','head_portrait','birthday','stature','weight','medical_history','update_time','location','blood_glucose','lastLoginTime','newUploadTime','identity','deviceid','head_portrait_time','accid','token','wallet','idcardNum','faith','nation','status','country_code','time_diff','final_phone','enterprise_id','thirdUserid','isDoctor','isNurse','imAccid','payPassWord','isCancel','recommendUser') def __getitem__(self, item): return getattr(self, item)

很关键的俩个方法:?

def keys(self):

def __getitem__(self,item)

?然后调用对象的dict()fang方法。

@app.route('/select_user') def select_user(): # 查询所有用户 users_list = User.query.all() list = [dict(i) for i in users_list] return json.dumps(list,cls=DateEncoder,indent=4)

给前端返回去一个json,又出问题:

提示:ypeError: Object of type 'bytes' is not JSON serializable

import json class MyEncoder(json.JSONEncoder): def default(self, obj): """ 只要检查到了是bytes类型的数据就把它转为str类型 :param obj: :return: """ if isinstance(obj, bytes): return str(obj, encoding='utf-8') return json.JSONEncoder.default(self, obj)

解决了,网上找到的

又提示:Object of type 'datetime' is not JSON serializable

import json import datetime class DateEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, datetime.datetime): return obj.strftime('%Y-%m-%d %H:%M:%S') elif isinstance(obj, datetime.date): return obj.strftime("%Y-%m-%d") else: return json.JSONEncoder.default(self, obj)

解决掉了,最后想着结合一下:

import json import datetime class DateEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, datetime.datetime): return obj.strftime('%Y-%m-%d %H:%M:%S') elif isinstance(obj, datetime.date): return obj.strftime("%Y-%m-%d") elif isinstance(obj, bytes): return str(obj, encoding='utf-8') else: return json.JSONEncoder.default(self, obj)

就彻底好了,

瞬间好了,很欣慰撒。。。。。。。。。。。。。。。

贴个图,下班回家。

?

?



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3